const fs = require("fs");

/**
 * 1. 打开 a 文件， 利用read 将数据保存到buffer中暂存起来
 * 2. 打开 b 文件， 利用write将buffer中的数据写入到b文件中
 */

// let buf = Buffer.alloc(10);

// 01. 打开指定的文件
// fs.open("a.txt", "r", (err, rfd) => {
//   // 02. 从打开的文件中获取数据
//   fs.read(rfd, buf, 0, 10, 0, (err, readBytes, buffer) => {
//     // 03. 打开b文件， 用于执行数据写入操作
//     fs.open("b.txt", "w", (err, wfd) => {
//       // 04. 将buffer中的数据写入到b.txt中
//       fs.write(wfd, buf, 0, 10, 0, (err, writeen) => {
//         console.log("写入成功");
//       });
//     });
//   });
// });

// 02. 数据的完全拷贝
let buf = Buffer.alloc(10);
const BUFFER_SIZE = buf.length;
let readOffset = 0;
function next(rfd, wfd) {
  fs.read(rfd, buf, 0, BUFFER_SIZE, readOffset, (err, readBytes, buffer) => {
    // console.log(readBytes);
    // console.log(buffer);
    // console.log(buffer.toString());
    if (!readBytes) {
      // 如果条件成立， 说明内容已经读取完毕
      fs.close(rfd, () => {});
      fs.close(wfd, () => {});
      console.log("拷贝完成");
      return;
    }
    readOffset += readBytes;
    fs.write(wfd, buf, 0, readBytes, (err, written) => {
      //   console.log(written);
      next(rfd, wfd);
    });
  });
}

fs.open("a.txt", "r", (err, rfd) => {
  fs.open("b.txt", "w", (err, wfd) => {
    next(rfd, wfd);
  });
});
